package com.zhc.tools.core.fileimport.domain;

import lombok.Data;

/**
 * 说明：import file setting object
 * @author zhc
 */
@Data
public class FileStrategySetting implements java.io.Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 操作组别
	 */
	private String groupType;
	
	/**
	 * 操作业务类型
	 */
	private String businessType;
	
	/**
	 * 可不配置，默认为空
	 * 可配置默认提供的 baseImportFileExecutor 
	 * 批量导入文件核心通用服务（支持多线程处理），若不做其他变动，不要变动 baseImportFileExecutor 
	 */
	private String parentStrategyServiceType;
	
	/**
	 * 不能为空
	 * 具体导入服务，若需要使用多线程处理，可将 p:parentStrategyServiceType 配置为 baseImportFileExecutor
	 */
	private String strategyServiceType;
	
	
	/** 导入执行service name（前端展示） */
	private String strategyName;
	
	/**
	 * 描述
	 */
	private String strategyDesc;
	
	/**
	 * 可不配置，默认为 999
	 * 显示优先级，越小越在前
	 */
	private Integer priority;
	
	/**
	 * 可不配置，默认为 false 
	 * 是否校验文件名称，true 则校验，则上传文件名必须以 strategyName 开头
	 * ps: filename.startsWith(fileStrategySetting.getStrategyName()
	 */
	private boolean validFilename = false;
	
	/**
	 * 可不配置，默认为 false， 不记录
	 * 是否记录日志，具体记录日志使用 baseLogService 即配置的 ${baseLogService.name} 执行记录，可不配置，默认为false
	 */
	private boolean saveLog = false;
	
	/**
	 * 可不配置，默认为 0
	 * 跳过索引，一般跳过文件标题行，具体数据从这个索引后开始读取
	 */
	private int skipLineIndex = 0;
	
	/**
	 * 是否使用多线程，默认不使用
	 * 可不配置，默认为 false， 不使用；
	 * 为 true 时，需要配置 p:parentStrategyServiceType 为 baseImportFileExecutor，否则不生效
	 */
	private boolean useMultiThread = false;
	
	/**
	 * 使用多线程可选配置项，可不配置，默认为 50
	 * 使用ImportMultiThreadProcessor时，待执行数据达到此数量才使用多线程处理，默认50，只有大于这个数才开启多线程，否则只开启一个线程 
	 */
	private int useMultiNumMin = 50;
	
	/**
	 * 可不设置，默认为4
	 * 设置线程数，若小于等于0 则为当前CPU内核数，线程数不能大于内核数的5倍，否则为内核数 
	 */
	private int threadNum = 4;
}
